package com.zhangtai.modules.vo;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 
 * 
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2020-06-15 11:54:06
 */
@Data
@ApiModel(value="添加新员工需要传的参数")
public class EmployeeInfoVo implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 员工id
	 */
	@ApiModelProperty(value="oid",required = false)
	private Long oid;

	@ApiModelProperty(value="姓名",name = "cName",required = false)
	private String name;
	/**
	 * 性别
	 */
	@ApiModelProperty(value="性别，1：男，2：女，字符串型",name = "cGender",required = false)
	private String gender;
	/**
	 * 身份证号
	 */
	@NotNull(message = "身份证不能为空")
	@ApiModelProperty(value="身份证号",required = false)
	private String idcard;

	@ApiModelProperty(value="工号",required = false)
	private String code;
	/**
	 * 民族
	 */
	@ApiModelProperty(value="国家，156：中国",required = false)
	private String nation;
	/**
	 * 籍贯
	 */
	@ApiModelProperty(value="籍贯，读/common/getNativeplaceTree 接口获取",required = false)
	private String nativeplace;
	/**
	 * 国籍
	 */
	@ApiModelProperty(value="民族，",required = false)
	private String nationality;
	/**
	 * 手机
	 */
	@NotEmpty(message = "手机号不能为空")
	@ApiModelProperty(value="手机",required = false)
	private String mobile;
	/**
	 * 政治面貌
	 */
	@ApiModelProperty(value="政治面貌，1：党员， 13：群众",required = false)
	private String polity;
	/**
	 * 户口所在地
	 */
	@ApiModelProperty(value="户口所在地",required = false)
	private String regresidence;
	/**
	 * 家庭地址
	 */
	@ApiModelProperty(value="家庭地址",required = false)
	private String address;
	/**
	 * 个人电子邮件
	 */
	@ApiModelProperty(value="电子邮箱",required = false)
	private String privatemail;
	/**
	 * 健康状态
	 */
	@ApiModelProperty(value="健康状态,1:非常好 ，2：良好 3：一般，4：有生理缺陷，5：残疾",required = false)
	private String healthstatus;
	/**
	 * 是否退伍兵
	 */
	@ApiModelProperty(value="是否退伍兵 1:不是，2是",required = false)
	private String disbandment;
	/**
	 * 婚姻状况
	 */
	@ApiModelProperty(value="婚姻状况，1：未婚，2：已婚",required = false)
	private String marital;
	/**
	 * 参加工作日期
	 */
	@ApiModelProperty(value="参加工作日期",required = false)
	private Date beginworkdate;
	/**
	 * 生日
	 */
	@ApiModelProperty(value="生日",required = false)
	private Date birthday;

	/**
	 * 0:社招，1：实习生，2：校招
	 */
	@NotNull(message = "0:社招，1：实习生,2：管培生  不能为空")
	@ApiModelProperty(value="0:社招，1：实习生,2：管培生，",required = false)
	private String socialTrainee;
	/**
	 * 联系方式
	 */
	@ApiModelProperty(value="联系方式",required = false)
	private String contact;

	/**
	 * 联系方式
	 */
	@ApiModelProperty(value="学历，1：研究生，2：大学本科，3：大专，4：中专，5：技校，6：高中，7：初中，8：小学，9：文盲",required = false)
	private String degree;

	@ApiModelProperty(value="专业",required = false)
	private String speciality;

	/**
	 * 拟录用部门
	 */
//	@ApiModelProperty(value="拟录用部门，读接口/job/findOrgTree获取",required = false)
//	private String unitname;

	@ApiModelProperty(value="0:新员工，1：复职员工，离职小于一年，2：旧员工,3:复职员工，离职大于一年",required = false)
	private Integer isReinstate;


	/**
	 * 部门id
	 */
	@ApiModelProperty(value="拟录部门id，读接口/job/findOrgTree获取",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long unitId;

//	/**
//	 * 拟录用公司
//	 */
//	@ApiModelProperty(value="拟录用公司，读接口/job/findOrgTree获取",required = false)
//	private String orgname;

	/**
	 * 公司id
	 */
	@ApiModelProperty(value="拟录公司id，读接口/job/findOrgTree获取",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long orgId;
	/**
	 * 拟录用岗位
	 */
//	@ApiModelProperty(value="拟录用岗位，读接口/job/findJobByOrgId/{orgId}获取",required = false)
//	private String jobname;
	/**
	 * 职位id
	 */
	@ApiModelProperty(value="岗位id，读接口/job/findJobByOrgId/{orgId}获取",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long jobId;

	/**
	 * 职级id
	 */
	@ApiModelProperty(value="职级id,读接口/job/findJobLevel获取",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long jobLevelId;
	/**
	 * 职级
	 */
	/**
	 * 职级
	 */
//	@ApiModelProperty(value="职级，读接口/job/findJobLevel获取",required = false)
//	private String jobLevel;

	@ApiModelProperty(value="职级类别,1:专业职级，2：管理职级",required = false)
	private Integer jobLevelType;





	/**
	 * 预计入职时间
	 */
	@NotNull(message = "入职时间不能为空")
	@ApiModelProperty(value="入职日期",required = false)
	private Date hiredate;


	/**
	 * 管理职级
	 */

	/**
	 * 试用期
	 */
	@NotNull(message = "试用期不能为空")
	@ApiModelProperty(value="试用期，3：3个月，6:6个月",required = false)
	private Integer probationday;


	@ApiModelProperty(value="0:新建 ，1：填写完已保存 2：bpm审批中，3：审批完成,4:流程作废，5：offer已发送，6：流程被驳回",required = false)
	private Integer status;

	/**
	 * 招聘渠道
	 */
	@ApiModelProperty(value="招聘渠道,1:猎头，2：网站，3：内部推荐，4：外部推荐，5：现场招聘，6：校园招聘，7：其他",required = false)
	private String channel;
	/**
	 * 招聘网站
	 */
	@ApiModelProperty(value="招聘网站，1：广西人才，2：智联，3：58同城，4：前程无忧，5：猎聘网，6：其他",required = false)
	private String recruitmentWeb;
	/**
	 * 推荐人-内部
	 */
	@ApiModelProperty(value="推荐人-内部",required = false)
	private String innerReferrer;
	/**
	 * 推荐人-外部
	 */
	@ApiModelProperty(value="推荐人-外部",required = false)
	private String outerReferrer;


	/**
	 * 固定月薪
	 */
	@ApiModelProperty(value="月薪",required = false)
	private BigDecimal monthlySalary;
	/**
	 * 模块绩效
	 */
	@ApiModelProperty(value="绩效",required = false)
	private BigDecimal performance;



//	@ApiModelProperty(value="条线，读接口：/salary/getOrgLine获取",required = false)
//	private String line;
	@ApiModelProperty(value="条线id，读接口：/salary/getOrgLine获取",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long lineId;

//	@ApiModelProperty(value="体系，读接口：/salary/getOrgSystem获取",required = false)
//	private String jobSystem;

	@ApiModelProperty(value="体系id，读接口：/salary/getOrgSystem获取",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long jobSystemId;


	@ApiModelProperty(value="原单位工资流水图片",required = false)
	private List<String> oldSalaryRecordUrl;

	@ApiModelProperty(value="一寸照片url",required = false)
	private String photoUrl;


	@ApiModelProperty(value="毕业证",required = false)
	private String graduationUrl;

	@ApiModelProperty(value="学位证",required = false)
	private String degreeUrl;

	@ApiModelProperty(value="离职证明",required = false)
	private String dimissionUrl;

	@ApiModelProperty(value="体检报告",required = false)
	private String healthUrl;

	@ApiModelProperty(value="身份证正反面",required = false)
	private List<String> idcardImgs;

	@ApiModelProperty(value="职称证书",required = false)
	private List<String>  credential;

	@ApiModelProperty(value="其他附件",required = false)
	private List<String> attachments;

//	@ApiModelProperty(value="是否已发送offer,0:没发过，1：发过",required = false)
//	private Integer isOffer;



	@ApiModelProperty(value="工作地点",required = false)
	private String workAddress;

	/**
	 * 合同类型，0：聘用合同，1：劳动合同
	 */
	@ApiModelProperty(value="合同类型，0：聘用合同，1：劳动合同",required = false)
	private String contractType;


	/**
	 * 合同期限类型，1：固定期限，2：无固定期限 ，3：完成一定工作期限，4：5至10年(含10年)，5：无固定期限，6：完成一定工作期限，7：其他
	 */
	@ApiModelProperty(value="合同期限类型，1：固定期限，2：无固定期限 ，3：完成一定工作期限，4：5至10年(含10年)，5：无固定期限，6：完成一定工作期限，7：其他",required = false)
	private String contractTimeType;

//	@ApiModelProperty(value="转正日期",required = true)
//	private Date regularDay;

	/**
	 * 劳动合同/实习/返聘期限期限
	 */
	@NotNull(message = "劳动合同/实习/返聘期限期限不能为空")
	@ApiModelProperty(value="劳动合同/实习/返聘期限 ，选择列表：1：1个月，2：2个月，3：3个月，4：半年，5：1年，6：2年，7：3年",required = false)
	private Integer  laborContractYears;

	@ApiModelProperty(value="员工类型，0：新员工，1：复职员工，离职未满一年，2：复职员工，离职大于一年",required = true)
	private String jobType;

//	@ApiModelProperty(value="员工类型，0：新员工，1：复职员工，离职未满一年，2：复职员工，离职大于一年",required = true)
//	private Integer empType;




	//    复职<1 年 和 >=1年
	@ApiModelProperty(value="原公司id",required = false)
	private Long oldCompanyId;

	//    复职<1 年 和 >=1年
	@ApiModelProperty(value="原部门id",required = false)
	private Long oldDepartmentId;

	//    复职<1 年 和 >=1年
	@ApiModelProperty(value="原岗位id",required = false)
	private Long oldJobId;

	//    复职<1 年 和 >=1年
	@ApiModelProperty(value="原职级类型",required = false)
	private Integer oldJobLevelType;

	//    复职<1 年 和 >=1年
	@ApiModelProperty(value="原职级Id",required = false)
	private Long oldJobLevelId;

	@ApiModelProperty(value="员工od账号",required = false)
	private String useraccount;

	@ApiModelProperty(value="是否管培生，2：不是，1：是",required = false)
	private Integer isManagementTrainee;


	@ApiModelProperty(value="type :1  离职没超一年，  type：2 离职超过一年",required = false)
	private Integer type;

	/**
	 * 档案地址
	 */
	@ApiModelProperty(value="档案地址",required = false)
	private String recordFileAddress;


	@ApiModelProperty(value = "退伍军人编号", required = false)
	private String veteranNum;


	/**
	 * 专业类型
	 */
	@ApiModelProperty(value = "专业类型", required = false)
	private String professionalType;
	/**
	 * 岗位星级
	 */
	@ApiModelProperty(value = "岗位星级", required = false)
	private String positionStar;
	/**
	 * 是否复职
	 */
	@ApiModelProperty(value = "是否复职", required = false)
	private String reinstatement;
	/**
	 * 档案编号
	 */
	@ApiModelProperty(value = "档案编号", required = false)
	private String fileNumber;



	@ApiModelProperty(value = "是否公司负责人，null：不是，1：是", required = false)
	private String iscentreprincipal;

	@ApiModelProperty(value = "是否部门负责人，null：不是，1：是", required = false)
	private String isdepartmentprincipa;




	/**
	 * 甲方主体id
	 */
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long employerCompanyId;


	/**
	 * 甲方主体
	 */
	private String employerCompany;



}
